package com.sherlocky.util;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;

import conf.Constants;

public abstract class SqlUtils {
	/**
	 * 得到某个列的查询限制条件
	 * @param columnName 列名
	 * @param values 查询列的限制值，sql语句中用or隔开
	 * @return
	 */
	public static String getColumnQueryCondition(String columnName, Object[] values){
		if(values == null || values.length == 0)
			return "";
		StringBuffer tempSql = new StringBuffer(" (");
		for(int i = 0; i < values.length; i++){
			tempSql.append("("+columnName+" = '"+ StringEscapeUtils.escapeSql(""+values[i])+"')");
			if(i < values.length-1){
				tempSql.append(" or ");
			}
		}
		tempSql.append(" )");
		return tempSql.toString();
	}
	
	/**
	 * 得到支持中文排序的字段名，目前策略是：判断是否支持gbk编码，如果支持的话用convert(xx using gbk)处理，反之直接返回字段名，没法支持
	 * @param column
	 * @return
	 */
	public static String getColumnNameSupportPinyi(String column) {
		if(Constants.IS_SUPPORT_GBK && !StringUtils.contains(column, "convert")) {
			return "convert("+ column +" using gbk)";
		}else{
			//不支持gbk编码，直接返回字段名
			return column;
		}
	}

}
